iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Odoo

「Odoo 解構:開源 ERP 平台的進階設計與實踐」系列 第 10

DAY10結合前兩天~模組結構及繼承覆蓋的「自定義銷售訂單模組」

  • 分享至 

  • xImage
  •  

在 Odoo (以前稱為 OpenERP) 中,模組設計的技術主要涉及模組的結構、繼承、覆蓋及擴展功能。下面是一個常見的例子,展示如何在 Odoo 中設計模組,並應用這些技術。

例子:自定義銷售訂單模組

假設我們要自定義 Odoo 的「銷售訂單」功能,在其基礎上添加新功能。這將包括繼承銷售模組、覆蓋其方法,以及擴展功能。

1. 模組結構

模組的基本結構通常如下:

custom_sale_order/
│
├── __init__.py
├── __manifest__.py
├── models/
 │  ├── __init__.py
 │  └── sale_order.py
└── views/
    └── sale_order_view.xml
  • __manifest__.py: 定義模組的描述、依賴、版本等信息。
  • models/: 放置數據模型的 Python 文件。
  • views/: 定義視圖和介面的 XML 文件。

2. 繼承 (Inheritance)

在 Odoo 中,繼承是添加或修改現有模組的主要方式。繼承的兩種類型:

  • 類繼承:對現有類進行擴展或修改。
  • 視圖繼承:修改現有的 UI 結構。

我們在這裡繼承 Odoo 的 sale.order 模型,並添加一個新的字段。

Python 文件 (sale_order.py)

from odoo import models, fields

class SaleOrder(models.Model):
    _inherit = 'sale.order'
    
    custom_field = fields.Char(string="Custom Field")

3. 覆蓋 (Override)

覆蓋是修改 Odoo 中已有的方法或功能。例如,覆蓋銷售訂單確認的方法,添加自定義邏輯。

class SaleOrder(models.Model):
    _inherit = 'sale.order'
    
    def action_confirm(self):
        # 自定義邏輯
        res = super(SaleOrder, self).action_confirm()
        self.custom_logic()
        return res

    def custom_logic(self):
        # 執行某些自定義邏輯
        pass

4. 視圖擴展 (View Extension)

通過 XML 文件,我們可以擴展或修改現有的表單視圖。例如,在銷售訂單表單中顯示新的字段。

XML 文件 (sale_order_view.xml)

<odoo>
    <record id="view_order_form_inherit" model="ir.ui.view">
        <field name="name">sale.order.form.inherit</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.view_order_form"/>
        <field name="arch" type="xml">
            <xpath expr="//sheet" position="inside">
                <group>
                    <field name="custom_field"/>
                </group>
            </xpath>
        </field>
    </record>
</odoo>

5. 總結

這個例子展示了如何在 Odoo 中設計和實現一個模組,並運用了模組結構、類繼承、方法覆蓋、以及視圖擴展等技術。這種模組化設計使得 Odoo 的功能可以靈活擴展,並在保持核心功能的同時滿足具體的業務需求。

這種技術可以運用在各種業務場景中,例如自定義報表、調整工作流程、或是與其他系統的集成。


上一篇
DAY9 「提升業務效率:如何通過 Odoo CRM 自動化插件實現高價值客戶管理」
下一篇
DAY11處理問題—使用CRM客戶關係管理模組
系列文
「Odoo 解構:開源 ERP 平台的進階設計與實踐」13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言